/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CONTABILIDAD_CONTROLADOR;

import CONTABILIDAD_MODELO.CON_CENTRO_COSTO;
import CONTABILIDAD_MODELO.CON_CUENTA_COMPROBANTE;
import CONTABILIDAD_MODELO.CON_CUENTA_CONTABLE;
import CONTABILIDAD_MODELO.CON_FECHA_CIERRE;
import CONTABILIDAD_MODELO.CON_PLANILLA_PAGO_RETROACTIVO;
import Conexion.Conexion;
import Modelo.SIS_VERSION;
import RRHH_Modelo.RHH_DEPARTAMENTO;
import RRHH_Modelo.RHH_PLANILLA_RETROACTIVO_CABE;
import RRHH_Modelo.RHH_REGIONAL;
import RRHH_Modelo.RHH_SUCURSAL;
import RRHH_Modelo.RHH_USUARIO;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@MultipartConfig
@WebServlet(name = "CON_PAGO_RETROACTIVO_CONTROLLER", urlPatterns = {"/CON_PAGO_RETROACTIVO_CONTROLLER"})
public class CON_PAGO_RETROACTIVO_CONTROLLER extends HttpServlet {

    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet CON_PAGO_PLANILLA_SALARIOS_CONTROLLER</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet CON_PAGO_PLANILLA_SALARIOS_CONTROLLER at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        try {
            RHH_USUARIO usuario = ((RHH_USUARIO) request.getSession().getAttribute("usr"));
            Conexion con = new Conexion(usuario.getUSUARIO(), usuario.getPASSWORD());
            String html = "";
            
            String evento = request.getParameter("evento");
            switch (evento) {
                case "version":
                    html = version(request, con);
                    break;
                case "cargarCuenta":
                    html = cargarCuenta(request, con);
                    break;
                case "traercc":
                    html = traercc(request, con);
                    break;
                case "pagar":
                    html = pagar(request, con);
                    break;
                case "cargar_planillas":
                    html = cargar_planillas(request, con);
                    break;
                case "abrir_planilla":
                    html = abrir_planilla(request, con);
                    break;
                case "rechazar":
                    html = rechazar(request, con);
                    break;
            }
            
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/plain");
            response.getWriter().write(html);
            con.Close();
        } catch (Exception ex) {
            Logger.getLogger(CON_PAGO_RETROACTIVO_CONTROLLER.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private String traercc(HttpServletRequest request, Conexion con) throws SQLException {
        String html = "";
        String codcuenta = request.getParameter("value");
        html += new CON_CENTRO_COSTO(con).gethojasCombo(codcuenta);

        return html;
    }

    public String cuentas(HttpServletRequest request, Conexion con) throws SQLException {
        int vCuenta = Integer.parseInt(request.getParameter("cuenta"));
        CON_CUENTA_CONTABLE cuenta = new CON_CUENTA_CONTABLE(con);
        if (vCuenta == -1) {
            String json = cuenta.generarListaHojasdescripcion();
            return json;
        }
        SIS_VERSION version = new SIS_VERSION(con);
        List<SIS_VERSION> VersionCuenta = version.getUltimaVersion("cuentaHoja");

        String cuentaStr = "{";
        for (int i = vCuenta; i < VersionCuenta.size(); i++) {
            double ida = VersionCuenta.get(i).getID_CUENTA();
            cuenta = cuenta.BuscarXid(ida);
            if(cuenta==null && !VersionCuenta.get(i).getACCION().equals("E"))continue;
            int idcu = VersionCuenta.get(i).getID_CUENTA().intValue();
            if (VersionCuenta.get(i).getACCION().equals("E") || cuenta == null) {
                cuentaStr += "\"c" + idcu + "\":{\"CODIGO\":\"na\", \"NIVEL\":\"na\", \"id\":\"" + idcu + "\", \"DESCRIPCION\":\"na\", \"MONEDA\":\"na\"},";
                cuenta = new CON_CUENTA_CONTABLE(con);
                continue;
            }
            cuentaStr += "\"c" + cuenta.getID() + "\":{\"CODIGO\":\"" + cuenta.getCODIGO() + "\", \"NIVEL\":\"" + cuenta.getID_NIVEL() + "\", \"id\":\"" + cuenta.getID() + "\", \"DESCRIPCION\":\"" + cuenta.getDESCRIPCION() + "\", \"MONEDA\":\"" + cuenta.getID_MONEDA() + "\"},";
        }
        if (cuentaStr.length() == 1) {
            return "[]";
        }
        cuentaStr = cuentaStr.substring(0, cuentaStr.length() - 1) + "}";

        return cuentaStr;
    }

    public String cargarCuenta(HttpServletRequest request, Conexion con) {
        try {
            String cuenta = cuentas(request, con);
            return "{\"cuenta\":" + cuenta + "}";
        } catch (SQLException ex) {
            return "[]";
        }
    }

    public String version(HttpServletRequest request, Conexion con) {
        try {
            SIS_VERSION version = new SIS_VERSION(con);
            String cuenta = version.getVersion("cuenta");
            return "{\"cuenta\":\"" + cuenta + "\"}";
        } catch (SQLException ex) {
            return "{\"cuenta\":0,\"centro\":0}";
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private String pagar(HttpServletRequest request, Conexion con) throws SQLException, Exception {
        
        int id_planilla = Integer.parseInt(request.getParameter("id_planilla"));
        List<CON_PLANILLA_PAGO_RETROACTIVO> lista =  new CON_PLANILLA_PAGO_RETROACTIVO(con).BuscarxCabecera(id_planilla);
        
        CON_CUENTA_COMPROBANTE ccc =new CON_CUENTA_COMPROBANTE();
        ccc.setCon(con);
        ccc.EliminarXComprobante(19);
        
        for(CON_PLANILLA_PAGO_RETROACTIVO apro:lista)
        {                                                                           
            int depto = apro.getDEPARTAMENTO();
            int regional = apro.getREGIONAL();
            int sucursal = apro.getSUCURSAL();
            int cod = apro.getID_CABECERA_TIPO();
            String cod_cuenta_debe = request.getParameter("cod_cuenta_debe_"+cod+"_"+depto+"_"+regional+"_"+sucursal);
            apro.setCOD_CUENTA_CONTABLE_DEBE(cod_cuenta_debe);            
            String cod_cc_debe = request.getParameter("cc_debe_"+cod+"_"+depto+"_"+regional+"_"+sucursal);
            apro.setCOD_CENTRO_COSTO_DEBE(cod_cc_debe);
            String glosa = request.getParameter("glosa_"+cod+"_"+depto+"_"+regional+"_"+sucursal);
            apro.setGLOSA(glosa);
            String cod_cuenta_haber = request.getParameter("cod_cuenta_haber_"+cod+"_"+depto+"_"+regional+"_"+sucursal);
            apro.setCOD_CUENTA_CONTABLE_HABER(cod_cuenta_haber);
            String cc_haber = request.getParameter("cc_haber_"+cod+"_"+depto+"_"+regional+"_"+sucursal);
            apro.setCOD_CENTRO_COSTO_HABER(cc_haber);
            apro.Modificar();
            
            double cc_debe=0.0;
            double cc_haber1=0.0;
            if(cod_cc_debe!=null)
                cc_debe=Double.parseDouble(cod_cc_debe);
            if(cc_haber!=null)
                cc_haber1=Double.parseDouble(cc_haber);
            
            CON_CUENTA_CONTABLE cuenta_debe = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(cod_cuenta_debe);
            CON_CENTRO_COSTO centro_debe = new CON_CENTRO_COSTO(con).BuscarXid(cc_debe);
            CON_CUENTA_CONTABLE cuenta_haber = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(cod_cuenta_haber);
            CON_CENTRO_COSTO centro_haber = new CON_CENTRO_COSTO(con).BuscarXid(cc_haber1);
            
            if(apro.getID_CABECERA_TIPO()==1)
            {
                if(centro_debe!=null)
                {
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, 0.0, apro.getMONTO(), glosa, cuenta_debe.getID(), 19, centro_debe.getID(), "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, apro.getMONTO(),0.0, glosa, cuenta_haber.getID(), 19, centro_debe.getID(), "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                }
                else
                {
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, 0.0, apro.getMONTO(), glosa, cuenta_debe.getID(), 19, 0.0, "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, apro.getMONTO(),0.0, glosa, cuenta_haber.getID(), 19, 0.0, "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                }
            }
            else
            {
                if(centro_haber!=null)
                {
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, apro.getMONTO(), 0.0, glosa, cuenta_haber.getID(), 19, centro_haber.getID(), "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, 0.0,apro.getMONTO(), glosa, cuenta_debe.getID(), 19, centro_haber.getID(), "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                }
                else
                {
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, apro.getMONTO(), 0.0, glosa, cuenta_haber.getID(), 19, 0.0, "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                    ccc = new CON_CUENTA_COMPROBANTE(0.0, 0.0, 0.0, 0.0,apro.getMONTO(), glosa, cuenta_debe.getID(), 19, 0.0, "PAGO RETROACTIVO", 0.0);
                    ccc.setCon(con);
                    ccc.Insertar();
                }
            }           
        }                
        return "true";        
    }

    private String cargar_planillas(HttpServletRequest request, Conexion con) throws SQLException {        
        String html ="<div>PLANILLAS PAGAS POR RHH</div><ul>";
        
        List<RHH_PLANILLA_RETROACTIVO_CABE> lista = new RHH_PLANILLA_RETROACTIVO_CABE(con).Todas_pagadas_RRHH();
        for(RHH_PLANILLA_RETROACTIVO_CABE cabecera:lista)
        {
            html+="<li><a href='#' onclick='abrir("+cabecera.getID()+")'>"+cabecera.getANO()+"/"+cabecera.getMES()+"</a></li>";
        }
        html+="</ul><div>PAGADAS POR CONTABILIDAD</div>";
        html+="<ul>";
        lista = new RHH_PLANILLA_RETROACTIVO_CABE(con).Todas_pagadas_CONTABILIDAD();
        for(RHH_PLANILLA_RETROACTIVO_CABE cabecera:lista)
        {
            html+="<li><a href='#' onclick='abrir("+cabecera.getID()+")'> "+cabecera.getANO()+"/"+cabecera.getMES()+"</a></li>";
        }
        html+="</ul>";
        return html;
    }

    private String abrir_planilla(HttpServletRequest request, Conexion con) throws SQLException {
        int id_planilla = Integer.parseInt(request.getParameter("id_planilla"));
        
        String html="<input type='hidden' name='id_planilla' value='"+id_planilla+"'/>";        
        String cabecera ="<table><thead><th>CUENTA DEBE</th><th>CUENTA DEBE DESC</th><th>DEBE CC</th><th>GLOSA</th><th>DEPTO</th><th>REGIONAL</th><th>SUCURSAL</th><th>MONTO</th><th>CUENTA HABER</th><th>CUENTA HABER DESC</th><th>HABER CC</th></thead><tbody>";
        String TOTAL_MONTO_PROVICIONAR_DEBE="<div style='text-align:center;'>TOTAL MONTO PROVICIONAR DEBE</div>"+cabecera;        
        
        RHH_PLANILLA_RETROACTIVO_CABE cabe = new RHH_PLANILLA_RETROACTIVO_CABE(con).Buscar(id_planilla);
        
        if(cabe.getESTADO()==2)
        {
            List<CON_PLANILLA_PAGO_RETROACTIVO> list = new CON_PLANILLA_PAGO_RETROACTIVO(con).BuscarxCabecera(id_planilla);
            for(CON_PLANILLA_PAGO_RETROACTIVO prov:list)
            {
                int depto = prov.getDEPARTAMENTO();
                int regional = prov.getREGIONAL();
                int sucursal = prov.getSUCURSAL();
                
                double monto = prov.getMONTO();
                
                String depto1 = "***";
                String regional1 = "***";
                String sucursal1 = "***";

                RHH_DEPARTAMENTO rh_depto = new RHH_DEPARTAMENTO(con).BuscarXid(depto);
                if(rh_depto!=null)
                    depto1=rh_depto.getDESCRIPCION();

                RHH_REGIONAL rh_reg = new RHH_REGIONAL(con).BuscarXid(regional);
                if(rh_reg!=null)
                    regional1=rh_reg.getDESCRIPCION();

                RHH_SUCURSAL rh_suc = new RHH_SUCURSAL(con).BuscarXid(sucursal);
                if(rh_suc!=null)
                    sucursal1=rh_suc.getDESCRIPCION();
                
                String cod_cuenta_debe=prov.getCOD_CUENTA_CONTABLE_DEBE();
                String cod_cuenta_haber=prov.getCOD_CUENTA_CONTABLE_HABER();
                String cod_cc_haber=prov.getCOD_CENTRO_COSTO_HABER();
                String cod_cc_debe=prov.getCOD_CENTRO_COSTO_DEBE();
                String glosa=prov.getGLOSA();

                CON_CUENTA_CONTABLE cuenta_debe = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(cod_cuenta_debe);
                CON_CUENTA_CONTABLE cuenta_haber = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(cod_cuenta_haber);
                
                String combo_cc_debe="";
                String combo_cc_haber="";
                
                CON_CENTRO_COSTO centro = new CON_CENTRO_COSTO(con);
                if(!cod_cuenta_debe.equals(""))
                {
                    if(centro.tierneCentrocosto(cod_cuenta_debe))       
                    {
                        List<CON_CENTRO_COSTO> lista = new CON_CENTRO_COSTO(con).gethojasList(cod_cuenta_debe);
                        for(CON_CENTRO_COSTO cen :lista)
                        {
                            if((cen.getID()+"").equals(cod_cc_debe))
                                combo_cc_debe+="<option value='"+cen.getID()+"' selected>"+cen.getDESCRIPCION()+"</option>";
                            else
                                combo_cc_debe+="<option value='"+cen.getID()+"'>"+cen.getDESCRIPCION()+"</option>";
                        }
                    }
                }
                if(!cod_cuenta_haber.equals(""))
                {
                    if(centro.tierneCentrocosto(cod_cuenta_haber))       
                    {
                        List<CON_CENTRO_COSTO> lista = new CON_CENTRO_COSTO(con).gethojasList(cod_cuenta_haber);
                        for(CON_CENTRO_COSTO cen :lista)
                        {
                            if((cen.getID()+"").equals(cod_cc_haber))
                                combo_cc_haber+="<option value='"+cen.getID()+"' selected>"+cen.getDESCRIPCION()+"</option>";
                            else
                                combo_cc_haber+="<option value='"+cen.getID()+"'>"+cen.getDESCRIPCION()+"</option>";
                        }
                    }
                }
                                                                
                int cod = prov.getID_CABECERA_TIPO();
                
                if(cod==1)
                    TOTAL_MONTO_PROVICIONAR_DEBE+="<tr><td><input type='text' value='"+cuenta_debe.getCODIGO()+"' onkeyup='buscarCuenta(this);' name='cod_cuenta_debe_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"' /></td> <td><input type='text' value='"+cuenta_debe.getDESCRIPCION()+"' onkeyup='buscarCuenta2(this);' name='desc_cuenta_debe_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><select name='cc_debe_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'>"+combo_cc_debe+"</select></td><td><input type='text' value='"+glosa+"' name='glosa_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td>"+depto1+"</td> <td>"+regional1+"</td> <td>"+sucursal1+"</td> <td>"+monto+"</td> <td><input type='text' value='"+cuenta_haber.getCODIGO()+"' onkeyup='buscarCuenta(this);'  name='cod_cuenta_haber_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><input type='text' value='"+cuenta_haber.getDESCRIPCION()+"' onkeyup='buscarCuenta2(this);'  name='desc_cuenta_haber_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><select name='cc_haber_"+cod+"_"+depto+"_"+regional+"_"+sucursal+"'>"+combo_cc_haber+"</select></td></tr>";                                    
            }
        }
        else
        {
            new CON_PLANILLA_PAGO_RETROACTIVO(con).EliminarXcabecera(id_planilla);        
            String consulta ="SELECT RHH_DEPARTAMENTO.ID AS DEPARTAMENTO, RHH_REGIONAL.ID AS REGIONAL, RHH_SUCURSAL.ID AS SUCURSAL, SUM (RHH_PLANILLA_RETROACTIVOS.TOTAL_RETROACTIVO_PAGABLE) AS MONTO\n" +
                            "   FROM BROKER.RHH_PLANILLA_RETROACTIVOS,\n" +
                            "       BROKER.RHH_REGIONAL,\n" +
                            "       BROKER.RHH_SUCURSAL,\n" +
                            "       BROKER.RHH_DEPARTAMENTO\n" +
                            "   where  (RHH_PLANILLA_RETROACTIVOS.DEPARTAMENTO = RHH_DEPARTAMENTO.ID(+))\n" +
                            "   AND (RHH_PLANILLA_RETROACTIVOS.REGIONAL = RHH_REGIONAL.ID(+))\n" +
                            "   AND (RHH_PLANILLA_RETROACTIVOS.SUCURSAL = RHH_SUCURSAL.ID(+))\n" +
                            "   AND  (RHH_PLANILLA_RETROACTIVOS.ID_CABECERA ="+id_planilla+")\n" +
                            "       group by \n" +
                            "       RHH_DEPARTAMENTO.ID,\n" +
                            "       RHH_SUCURSAL.ID,\n" +
                            "       RHH_REGIONAL.ID";
            ResultSet rs = con.EjecutarConsulta(consulta);                        
            while(rs.next())
            {
                int depto = rs.getInt("DEPARTAMENTO");            
                int regional = rs.getInt("REGIONAL");            
                int sucursal = rs.getInt("SUCURSAL");                                    

                TOTAL_MONTO_PROVICIONAR_DEBE+=cargarTabla(id_planilla, rs.getDouble("MONTO"), depto, regional, sucursal, 1, con);
                //TOTAL_MONTO_PROVICIONAR_HABER+=cargarTabla(id_planilla, rs.getDouble("MONTO"), depto, regional, sucursal, 2, con);
            }
        }        
              
        TOTAL_MONTO_PROVICIONAR_DEBE+="</tbody></table>";        
        //TOTAL_MONTO_PROVICIONAR_HABER+="</tbody></table>";        
        if(cabe.getESTADO()==2)
            html+=TOTAL_MONTO_PROVICIONAR_DEBE/*+TOTAL_MONTO_PROVICIONAR_HABER*/;
        if(cabe.getESTADO()==0)
        {
            CON_FECHA_CIERRE fechac = new CON_FECHA_CIERRE();
            fechac.setCon(con);                                        

            int mes=fechac.mesActual();
            int ano=fechac.anoActual();
            if(cabe.getANO()==ano && cabe.getMES()==mes)
                html+="<span style='float:right;'><button type='button' onclick='rechazar("+id_planilla+");'>RECHAZAR</button><button onclick='pagar();' type='button'>PAGAR</button></span>"+TOTAL_MONTO_PROVICIONAR_DEBE/*+TOTAL_MONTO_PROVICIONAR_HABER*/;
            else
                html+=TOTAL_MONTO_PROVICIONAR_DEBE/*+TOTAL_MONTO_PROVICIONAR_HABER*/;
        }
        
        return html;
    }

    private String cargarTabla(int id_planilla,double monto,int depto,int regional, int sucursal, int tipo, Conexion con) throws SQLException
    {    
        String consulta2="SELECT * "
                        + " FROM BROKER.CON_PLANILLA_PAGO_RETROACTIVO "
                        + "WHERE CON_PLANILLA_PAGO_RETROACTIVO.ID= (  "
                                                                    + "SELECT  max(CON_PLANILLA_PAGO_RETROACTIVO.ID) "
                                                                    + "FROM BROKER.CON_PLANILLA_PAGO_RETROACTIVO "
                                                                    + "where (CON_PLANILLA_PAGO_RETROACTIVO.DEPARTAMENTO = "+depto+") "
                                                                    + "AND (CON_PLANILLA_PAGO_RETROACTIVO.REGIONAL = "+regional+") "
                                                                    + "AND (CON_PLANILLA_PAGO_RETROACTIVO.SUCURSAL = "+sucursal+") "
                                                                    + "AND (CON_PLANILLA_PAGO_RETROACTIVO.ID_CABECERA_TIPO = "+tipo+")"
                                                                + ")";
        ResultSet rs2 = con.EjecutarConsulta(consulta2);
                
        String cod_debe="";
        String desc_debe="";
        String glosa="";
        String cod_haber="";
        String desc_haber="";
        String cod_cc_debe="";
        String cod_cc_haber="";
        String select_debe="";
        String select_haber="";
                
        if(rs2.next())
        {
             CON_CUENTA_CONTABLE cuenta_debe = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(rs2.getString("COD_CUENTA_CONTABLE_DEBE"));
           String ccd1=rs2.getString("COD_CENTRO_COSTO_DEBE");
            double ccd=0;
            if(ccd1!=null)
                ccd=Double.parseDouble(ccd1);
            
            CON_CENTRO_COSTO centro_debe=null;
            if(ccd!=0)
                centro_debe = new CON_CENTRO_COSTO(con).BuscarXid(ccd);
            
            CON_CUENTA_CONTABLE cuenta_haber = new CON_CUENTA_CONTABLE(con).BuscarXCodigo(rs2.getString("COD_CUENTA_CONTABLE_HABER"));
            
            String cch1=rs2.getString("COD_CENTRO_COSTO_HABER");
            double cch=0.0;
            if(cch1!=null)
                cch=Double.parseDouble(cch1);
            
            CON_CENTRO_COSTO centro_haber=null;
            if(cch!=0)
                centro_haber = new CON_CENTRO_COSTO(con).BuscarXid(cch);    

            glosa=rs2.getString("GLOSA");
            glosa = glosa==null?"":glosa;
            if(cuenta_debe!=null)
            {
                cod_debe=cuenta_debe.getCODIGO();
                desc_debe=cuenta_debe.getDESCRIPCION();
            }
            if(cuenta_haber!=null)
            {
                cod_haber=cuenta_haber.getCODIGO();
                desc_haber=cuenta_haber.getDESCRIPCION();
            }            
            if(centro_debe!=null)
                cod_cc_debe=centro_debe.getID()+"";
            if(centro_haber!=null)
                cod_cc_haber=centro_haber.getID()+"";


            CON_CENTRO_COSTO aux = new CON_CENTRO_COSTO(con);
            if(!cod_debe.equals(""))
            {
                if(aux.tierneCentrocosto(cod_debe))
                {
                    List<CON_CENTRO_COSTO> lista = new CON_CENTRO_COSTO(con).gethojasList(cod_debe);
                    for(CON_CENTRO_COSTO centro:lista)
                    {
                        if((centro.getID()+"").equals(cod_cc_debe))
                            select_debe+="<option value='"+centro.getID()+"' selected>"+centro.getDESCRIPCION()+"</option>";
                        else
                            select_debe+="<option value='"+centro.getID()+"'>"+centro.getDESCRIPCION()+"</option>";
                    }
                }
            }
            if(!cod_haber.equals(""))
            {
                if(aux.tierneCentrocosto(cod_haber))
                {
                    List<CON_CENTRO_COSTO> lista = new CON_CENTRO_COSTO(con).gethojasList(cod_haber);
                    for(CON_CENTRO_COSTO centro:lista)
                    {
                        if((centro.getID()+"").equals(cod_cc_haber))
                            select_haber+="<option value='"+centro.getID()+"' selected>"+centro.getDESCRIPCION()+"</option>";
                        else
                            select_haber+="<option value='"+centro.getID()+"'>"+centro.getDESCRIPCION()+"</option>";
                    }
                }
            }
        }
                
                  
        CON_PLANILLA_PAGO_RETROACTIVO con_planilla = new CON_PLANILLA_PAGO_RETROACTIVO(0, cod_debe, cod_cc_debe, cod_haber, cod_cc_haber, id_planilla, glosa, depto, regional, sucursal, monto, tipo);
        con_planilla.setCon(con);
        con_planilla.Insertar();            


        String depto1 = "***";
        String regional1 = "***";
        String sucursal1 = "***";

        RHH_DEPARTAMENTO rh_depto = new RHH_DEPARTAMENTO(con).BuscarXid(depto);
        if(rh_depto!=null)
            depto1=rh_depto.getDESCRIPCION();
        RHH_REGIONAL rh_reg = new RHH_REGIONAL(con).BuscarXid(regional);
        if(rh_reg!=null)
            regional1=rh_reg.getDESCRIPCION();

        RHH_SUCURSAL rh_suc = new RHH_SUCURSAL(con).BuscarXid(sucursal);
        if(rh_suc!=null)
            sucursal1=rh_suc.getDESCRIPCION();

        return "<tr><td><input type='text' value='"+cod_debe+"' onkeyup='buscarCuenta(this);' name='cod_cuenta_debe_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"' /></td> <td><input type='text' value='"+desc_debe+"' onkeyup='buscarCuenta2(this);' name='desc_cuenta_debe_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><select name='cc_debe_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'>"+select_debe+"</select></td><td><input type='text' value='"+glosa+"' name='glosa_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td>"+depto1+"</td> <td>"+regional1+"</td> <td>"+sucursal1+"</td> <td>"+monto+"</td> <td><input type='text' value='"+cod_haber+"' onkeyup='buscarCuenta(this);'  name='cod_cuenta_haber_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><input type='text' value='"+desc_haber+"' onkeyup='buscarCuenta2(this);'  name='desc_cuenta_haber_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'/></td> <td><select name='cc_haber_"+tipo+"_"+depto+"_"+regional+"_"+sucursal+"'>"+select_haber+"</select></td></tr>";
    }
    
    private String rechazar(HttpServletRequest request, Conexion con) throws SQLException {
        int id_planilla = Integer.parseInt(request.getParameter("id_planilla"));
        RHH_PLANILLA_RETROACTIVO_CABE prov = new RHH_PLANILLA_RETROACTIVO_CABE(con).Buscar(id_planilla);
        prov.setESTADO(1);
        prov.Modificar();
        return "true";
    }
    
    
}
